home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue50 / IPC / Mailslots / Delphi / ClientMainFormUnit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-28  |  1.3 KB  |  57 lines

  1. unit ClientMainFormUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Memo1: TMemo;
  12.     procedure FormCreate(Sender: TObject);
  13.     procedure FormDestroy(Sender: TObject);
  14.     procedure Memo1Change(Sender: TObject);
  15.   private
  16.     Mailslot: THandle;
  17.   end;
  18.  
  19. {$ifdef Ver90}
  20.   //This exception class did not exist in Delphi 2
  21.   EWin32Error = class(Exception);
  22. {$endif}
  23.  
  24. var
  25.   Form1: TForm1;
  26.  
  27. const
  28.   MailslotNameLocalWritePrefix = '\\.\mailslot\';
  29.   MailslotName = 'SampleMailslot';
  30.   MailslotWriteName = MailslotNameLocalWritePrefix + MailslotName;
  31.  
  32. implementation
  33.  
  34. {$R *.DFM}
  35.  
  36. procedure TForm1.FormCreate(Sender: TObject);
  37. begin
  38.   Mailslot := FileOpen(MailslotWriteName, fmOpenWrite or fmShareDenyWrite);
  39.   if DWord(Mailslot) = Invalid_Handle_Value then
  40.     raise EWin32Error.Create('Cannot open client side of mailslot');
  41. end;
  42.  
  43. procedure TForm1.FormDestroy(Sender: TObject);
  44. begin
  45.   FileClose(Mailslot);
  46. end;
  47.  
  48. procedure TForm1.Memo1Change(Sender: TObject);
  49. var
  50.   Msg: String;
  51. begin
  52.   Msg := Memo1.Text;
  53.   if FileWrite(Mailslot, Msg[1], Length(Msg)) = Integer(HFile_Error) then
  54.     raise EWin32Error.Create('Cannot write to mailslot');
  55. end;
  56.  
  57. end.